home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / u_man / cat3 / Tcl / uplevel.z / uplevel
Text File  |  1998-10-30  |  4KB  |  67 lines

  1.  
  2.  
  3.  
  4. uuuupppplllleeeevvvveeeellll((((3333TTTTccccllll))))                                                    uuuupppplllleeeevvvveeeellll((((3333TTTTccccllll))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      uplevel - Execute a script in a different stack frame
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      uuuupppplllleeeevvvveeeellll ?_l_e_v_e_l? _a_r_g ?_a_r_g ...?
  13.  
  14.  
  15. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  16.      All of the _a_r_g arguments are concatenated as if they had been passed to
  17.      ccccoooonnnnccccaaaatttt; the result is then evaluated in the variable context indicated by
  18.      _l_e_v_e_l.  UUUUpppplllleeeevvvveeeellll returns the result of that evaluation.
  19.  
  20.      If _l_e_v_e_l is an integer then it gives a distance (up the procedure calling
  21.      stack) to move before executing the command.  If _l_e_v_e_l consists of ####
  22.      followed by a number then the number gives an absolute level number.  If
  23.      _l_e_v_e_l is omitted then it defaults to 1111.  _L_e_v_e_l cannot be defaulted if the
  24.      first _c_o_m_m_a_n_d argument starts with a digit or ####.
  25.  
  26.      For example, suppose that procedure aaaa was invoked from top-level, and
  27.      that it called bbbb, and that bbbb called cccc.  Suppose that cccc invokes the
  28.      uuuupppplllleeeevvvveeeellll command.  If _l_e_v_e_l is 1111 or ####2222  or omitted, then the command will
  29.      be executed in the variable context of bbbb.  If _l_e_v_e_l is 2222 or ####1111 then the
  30.      command will be executed in the variable context of aaaa.  If _l_e_v_e_l is 3333 or
  31.      ####0000 then the command will be executed at top-level (only global variables
  32.      will be visible).
  33.  
  34.      The uuuupppplllleeeevvvveeeellll command causes the invoking procedure to disappear from the
  35.      procedure calling stack while the command is being executed.  In the
  36.      above example, suppose cccc invokes the command
  37.  
  38.           uuuupppplllleeeevvvveeeellll 1111 {{{{sssseeeetttt xxxx 44443333;;;; dddd}}}}
  39.  
  40.      where dddd is another Tcl procedure.  The sssseeeetttt command will modify the
  41.      variable xxxx in bbbb's context, and dddd will execute at level 3, as if called
  42.      from bbbb.  If it in turn executes the command
  43.  
  44.           uuuupppplllleeeevvvveeeellll {{{{sssseeeetttt xxxx 44442222}}}}
  45.  
  46.      then the sssseeeetttt command will modify the same variable xxxx in bbbb's context:  the
  47.      procedure cccc does not appear to be on the call stack when dddd is executing.
  48.      The command ``iiiinnnnffffoooo lllleeeevvvveeeellll'' may be used to obtain the level of the current
  49.      procedure.
  50.  
  51.      UUUUpppplllleeeevvvveeeellll makes it possible to implement new control constructs as Tcl
  52.      procedures (for example, uuuupppplllleeeevvvveeeellll could be used to implement the wwwwhhhhiiiilllleeee
  53.      construct as a Tcl procedure).
  54.  
  55.  
  56. KKKKEEEEYYYYWWWWOOOORRRRDDDDSSSS
  57.      context, stack frame, variables
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.